home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 September / PCWorld_2006-09_cd.bin / v cisle / hexer / mpth_17.exe / {app} / scripts / Structure Viewer / ntfs.mps < prev    next >
Text File  |  2006-03-19  |  5KB  |  186 lines

  1. option title, "NTFS Boot structure"
  2. =
  3. =
  4. =    Tiny Hexer script for NTFS structure view in
  5. =    mirkes.de's tiny hex editor
  6. =
  7. =    Adaptation of FAT16 (and built-in BMP) structure viewer
  8. =
  9. =    02-07-05 Bill Blankenship
  10. =
  11.  
  12.  
  13. option GlobalVars, 1
  14. option ReadTags, 1
  15. option target, structureviewer
  16.  
  17. = open active editor and goto current position/0
  18. var editor file
  19. editor = fileopen('::current')
  20. if ((param_count > 0) and (dword(params(0))==1))
  21.   fileseek editor, 0
  22. else
  23.   fileseek editor, filegetprop(editor, 'selstart')
  24. endif
  25. var start dword
  26. start = filegetprop(editor, 'position')
  27.  
  28. = open browser window
  29. var browser file
  30. browser = fileopen('::browser', 'c')
  31.  
  32. filesetprop browser, 'accepttags', 1
  33. filewrite browser "<font color=",'"',"blue",'"',"><b><u>NTFS Boot structure:</u></b></font>\n\n"
  34. filesetprop browser, 'accepttags', 0
  35.  
  36. filewrite browser "Position: ",start,"\n\n"
  37.  
  38. = read the JMP instruction
  39. var JMP1 byte JMP2 byte NOP byte
  40. fileread editor JMP1  
  41. fileread editor JMP2
  42. fileread editor NOP
  43.  
  44. = print JMP Instruction
  45. filewrite browser "JMP instruction: \t\t'",JMP1," ",JMP2," ",NOP,"'\n"
  46.  
  47. var OEM text
  48. fileread editor OEM 8
  49. filewrite browser "OEM:  \t\t\t\t'",OEM,"'\n"
  50.  
  51. = Do BIOS Parameter block
  52. var bytespersect word sectpercluster byte reservedsect word 
  53. var res1 word res2 byte res3 dword mediatype byte
  54. var totalsects qword mftlcn qword mftmirrlcn qword clustperrecord byte
  55. var clustperindex byte volsn qword 
  56.  
  57. fileread editor bytespersect
  58. filewrite browser "Bytes per Sector: \t\t'",bytespersect,"' ("
  59. call TO_DEC @bytespersect
  60. filewrite browser " dec)\n"
  61.  
  62. fileread editor sectpercluster
  63. filewrite browser "Sectors per cluster: \t\t'",sectpercluster,"' ("
  64. call TO_DEC @sectpercluster
  65. filewrite browser " dec)\n"
  66.  
  67. fileread editor reservedsect
  68. filewrite browser "Reserved Sectors: \t\t'",reservedsect,"' ("
  69. call TO_DEC @reservedsect
  70. filewrite browser " dec)\n"
  71.  
  72. fileread editor res1
  73. fileread editor res2
  74. filewrite browser "Always zero: \t\t\t'",res1
  75. NUMBER_PREFIX=''
  76. filewrite browser res2,"'\n"
  77. NUMBER_PREFIX='0x'
  78.  
  79. fileread editor res1
  80. filewrite browser "Always zero: \t\t\t'",res1,"'\n"
  81.  
  82. fileread editor mediatype
  83. filewrite browser "Media type: \t\t\t'",mediatype,"'\n"
  84.  
  85. fileread editor res1
  86. filewrite browser "Always zero: \t\t\t'",res1,"'\n"
  87.  
  88. fileread editor res1
  89. filewrite browser "Not used by NTFS: \t\t'",res1,"'\n"
  90.  
  91. fileread editor res1
  92. filewrite browser "Not used by NTFS: \t\t'",res1,"'\n"
  93.  
  94. fileread editor res3
  95. filewrite browser "Not used by NTFS: \t\t'",res3,"'\n"
  96.  
  97. fileread editor res3
  98. filewrite browser "Always zero: \t\t\t'",res3,"'\n"
  99.  
  100. fileread editor res3
  101. filewrite browser "Not used by NTFS: \t\t'",res3,"'\n"
  102.  
  103. fileread editor totalsects
  104. filewrite browser "Total sectors: \t\t'",totalsects,"' ("
  105. call TO_DEC @totalsects
  106. filewrite browser " dec)\n"
  107.  
  108. fileread editor mftlcn
  109. filewrite browser "LCN for $MFT: \t\t\t'",mftlcn,"' ("
  110. call TO_DEC @mftlcn
  111. filewrite browser " dec)\n"
  112.  
  113. fileread editor mftmirrlcn
  114. filewrite browser "LCN for $MFTMirr: \t\t'",mftmirrlcn,"' ("
  115. call TO_DEC @mftmirrlcn
  116. filewrite browser " dec)\n"
  117.  
  118. = If this value is negative, then the FILE record is smaller than
  119. = the cluster size. In this case the size of the record
  120. = is: 2^abs(clustperrecord)
  121.  
  122. fileread editor clustperrecord
  123. if clustperrecord > 0x7F
  124.    var bytesperrecord word
  125.    bytesperrecord = 0xFF - clustperrecord
  126.    bytesperrecord = 2 << bytesperrecord
  127.    filewrite browser "Bytes per $MFT record: \t'[",clustperrecord,"]-> ",bytesperrecord,"' ("
  128.    call TO_DEC @bytesperrecord
  129.    filewrite browser " dec)\n"
  130. else
  131.    filewrite browser "Clusters per $MFT record: \t'",clustperrecord,"' ("
  132.    call TO_DEC @clustperrecord
  133.    filewrite browser " dec)\n"
  134. endif
  135.  
  136.  
  137. fileread editor res1
  138. fileread editor res2
  139. filewrite browser "Not used by NTFS: \t\t'",res1
  140. NUMBER_PREFIX=''
  141. filewrite browser res2,"'\n"
  142. NUMBER_PREFIX='0x'
  143.  
  144. = If this value is negative, then the INDEX record is smaller than
  145. = the cluster size. In this case the size of the record
  146. = is: 2^abs(clustperindex)
  147.  
  148. fileread editor clustperindex
  149. if clustperindex > 0x7F
  150.    var bytesperindex word
  151.    bytesperindex = 0xFF - clustperindex
  152.    bytesperindex = 2 << bytesperindex
  153.    filewrite browser "Bytes per Index record: \t'[",clustperindex,"]-> ",bytesperindex,"' ("
  154.    call TO_DEC @bytesperindex
  155.    filewrite browser " dec)\n"
  156. else
  157.    filewrite browser "Clusters per Index record: \t'",clustperindex,"' ("
  158.    call TO_DEC @clustperindex
  159.    filewrite browser " dec)\n"
  160. endif
  161.  
  162. fileread editor res1
  163. fileread editor res2
  164. filewrite browser "Not used by NTFS: \t\t'",res1
  165. NUMBER_PREFIX=''
  166. filewrite browser res2,"'\n"
  167. NUMBER_PREFIX='0x'
  168.  
  169. fileread editor volsn
  170. filewrite browser "Volume serial number (64 bit):\t'",volsn,"' \n"
  171.  
  172. fileread editor res3
  173. filewrite browser "Not used by NTFS: \t\t'",res3,"'\n"
  174. end
  175.  
  176. = decimal output - taken from BMP viewer
  177. @@TO_DEC
  178. number_radix = 10
  179. number_prefix = ''
  180. var _r1 varref
  181. pop _r1
  182. filewrite browser deref(_r1)
  183. number_prefix = '0x'
  184. number_radix = 16
  185. return
  186.